iT邦幫忙

2021 iThome 鐵人賽

DAY 1
0
自我挑戰組

iOS 菜鳥工程師的30天 objective-C系列 第 1

Day 01 - objective C 基礎語法

  • 分享至 

  • xImage
  •  

前言

由於工作的緣故,開始學習 objective C。之前只學過 Swift , objective C 對我來說完全是個全新的世界,好多從沒見過的概念QQ,第一次見到的時候,還以為是哪裡來的天書,差點要直接辭職了(喂~。

目前學習大約三個星期左右,是個完完全全的小菜鳥,如果有沒寫好的地方,還請各位前輩幫忙糾正,那事不宜遲開始吧!

文章主要參考:http://tw.gitbook.net/objective_c/home.html


Objective-C 語言結構

一個 Objective-C program 基本上有以下幾個組成:

  • Preprocessor Commands(預處理命令)
  • Interface(接口)
  • Implementation(實現)
  • Method(方法)
  • Variables(變量)
  • Statements & Expressions(語句與表達)
  • Comments(註釋)

以 Hello World 範例

#import <Foundation/Foundation.h>

@interface SampleClass : NSObject

- (void) sampleMethed;

@end

@implementation SampleClass

- (void) sampleMethed {
    NSLog(@"Hello, World! \n");
}

@end

int main() {
    /* my first program in Objective-C */
    SampleClass *sampleClass = [[SampleClass alloc] init];
    [sampleClass sampleMethed];
    return  0;
}

讓我們來看看上述的各個部分

  • #import <Foundation/Foundation.h> :是 preprocessor command,它告訴編譯器在開始前要包含 Foundation.h 文件。
  • @interface SampleClass:NSObject :顯示如何創建接口,像是一種定義。這個類別(Class)繼承 NSObject(所有物件的基類/基礎)。
  • - (void)sampleMethod; :定義一個方法。
  • @end :表示 interface 的結束。
  • @implementation SampleClass :實現接口 SampleClass,有點像是實體化。
  • (void)sampleMethod{} :method 的具體內容。
  • int main() :是 program 開始開始執行的主要函數。
  • /*...*/ :註解,不會被執行,用來說明。
  • return 0 :終止 main() 並返回 0 。沒加一樣可以執行。

結果

Hello, World!

基本語法

Tokens in Objective-C

Objective-C 語言包含了各種 token。token 可以是 keyword, 標識符(id), 常量(contant), 字串(string), 符號。

ex.

NSLog(@"Hello, World! \n");

這個範例包含了六種 tokens,讓我們來一一拆解

NSLog
@
(
"Hello, World! \n"
)
;

分號;

在 Objective-C 中,分號的意思是語句終止,也就是每個單獨的語句必須以分號作結。
ex. 下面有兩個不同的語句,因此有兩個分號

NSLog(
      @"Hello, World!"
      );
return 0;

注釋

主要是用來說明的文字,會被編譯器忽略。
用法:以 /* 和 */ 表示開始跟結束

/* Hello, World */

標識符

標識符是用來標識變量、函數或任何其它用戶定義的項目名稱。可以用字母(A~Z)(a~z)、下劃線(_)、數字(0~9),但不能使用如 @、$、% 等符號。
Objective-C可以區分大小寫,因此 Tomtom 在 Objective-C 是兩種不同的標識符。


下一篇
Day 02 - Variables 與 Constants
系列文
iOS 菜鳥工程師的30天 objective-C10
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言